Many scenarios in computer systems involve relocating a block of data, such as the representation of an object, from one area of memory to another. The relocation is generally performed by performing a per-word copy of the data from a source memory address to a destination memory address. The relocation also involves updating references to the data, such as memory pointers, from the source memory address to the destination memory address. Once the references are updated, the block of memory at the source address may be deallocated for reuse.